Hallo Mirko,
ok, ich habe das gerade nachgebaut:
-
Neue Datei erstellt
-
Alt+F11
-
Alt+E, M
-
in das frisch angelegte Modul den Code kopiert und die Datei gespeichert.
-
Dann habe ich im Verzeichnis c:\test\test\ Exceldateien angelegt (mit den Dateiendungen *.xlsx oder *.xls), die jeweils zwei Tabellenblätter haben. Vorsichtshalber habe ich in beiden Tabellenblättern die Zellen C17 und F7 mit irgendwas gefüllt. Diese Dateien habe ich geschlossen.
-
Dann habe ich das Makro ausgeführt.
Es ist folgendes passiert: die Dateien, die das Makro öffnet, blinkten kurz auf dem Bildschirm auf. Als Resultat hatte ich so viele neue Tabellenblätter, wie Exceldateien im Ordner c:\test\test\, die in den Zellen A5 und A6 die entsprechenden Daten hattten.
Was kann ich jetzt für dich tun???
Dass ich das so genau aufgeschrieben habe, soll kein Protokoll sein oder ähnliches, sondern dir zeigen wie wir vielleicht zu einem gleichen Ergebnis kommen um dann weiter zu deinem Ergebnis zu kommen.
Was könnte bei dir anders sein, als bei mir:
-
Der Code innerhalb der Schleife könnte gar nicht ausgeführt werden, weil im Verzeichnis keine Dateien, die auf .xls* enden, vorhanden sind (z.B. weil du den abschließenden Backslash vergessen hast)
-
Es könnte sein, dass zwar Werte übertragen werden, allerdings die Quellzellen leer sind und somit das Ergebnis gar nicht sichtbar wird (weil die Zielzelle nach dem Übertrag immer noch leer ist).
-
....
Zunächst empfehle ich dir, den Code im Einzelschritt auszuführen (F8!) (oder im VBA-Editor unter im Menü unter "Debuggen"). Überlege dir vor dem Ausführen der nächsten (gelb hinterlegten) Codezeile, was du erwartest, das passiert. Geht der Code überhaupt in die Schleife?
Die Variable wbQuelle verweist auf die gerade frisch geöffnete Exceldatei. Du könntest dir mit der Codezeile
msgbox wbquelle.fullname
in einer MsgBox anzeigen lassen, welche Datei gerade geöffnet ist.
Du könntest mit der codezeile
debug.print fname
den aktuellen Inhalt in das Direktfenster schreiben lassen (das Direktfenster findest du im VBA-Editor mit Strg+G).
Du könntest - während der Code gerade im Haltemodus des Einzelschrittes ist - im Direktfenster folgendes eingeben:
?fname
und Enter drücken. Dann wird dir der aktuelle Inhalt der Variablen Fname in die nächste Codezeile geschrieben.
mit
?len(fname)
(im Diektfenster eingegeben und Enter gedrückt) kannst du dir die Länge der Zeichenkette, die in der Variablen Fname ist anzeigen lassen (wenn die Länge 0 ist, dann ist es schon mal kein gültiger Dateiname).
Du bemerkst: ich habe mich durch einen Test davon überzeugt, dass der Code funktioniert. Jetzt liegt es an dir, genauer nachzuforschen und/oder präziesere/konkretere Fragen zu stellen, damit ich dir helfen kann. Ich habe mich jetzt gerade mehr als 30 Minuten damit beschäftigt, das zu testen und diesen Text zu schreiben für einen Code, der meiner Meinung genau das macht, was du beschrieben hast, das er tun soll. Da stimmt dann einfach langsam das Verhältnis nicht mehr. In nahezu jeder Stadtbibliothek gibt es Bücher über VBA und im Netz findest du auch viel. Erarbeite dir, wie du einen solchen Code debuggen kannst und / oder stelle mir konkrete Fragen.
Eine Frage könnte sein: Ich verstehe nicht, was in der Zeile ... passiert, die Hilfe zur Dir()-Funktion habe ich gelesen, und verstehe sie so ....., doch wieso rufst du Dir() ohne Parameter auf? Oder ähnliches.
Es ist nicht ungewöhnlich, wenn du als Anfänger nach nur drei Stunden einen solchen Code nicht komplett nachvollziehen kannst. Ich habe mir zum erlernen von VBA kleinere und leichtere Aufgaben gestellt (zwei Zahlen addieren, meinen Namen in eine Zelle schreiben lassen, ....)
Wenn das eine Frage sein soll:
"Liegt es daran, dass ich einen Ordner habe, in dem eine Excel-Datei und ein weiterer Ordner mit den Datein, die eingelesen werden sollen, ist."
Dann fehlen ihr zwei wesentliche Merkmale, die mich dazu bewegen würden, sie zu beantworten:
-
Fragezeichen am Ende
-
klare, leicht nachvollziehbare Fragestellung (wie sieht es genau aus, was ist wo, wie heißen die Verzeichnisse, ...)
Grüße, Ulrich
|